<style>
  .layui-form-label {
    width: 100px;
  }

  .layui-input-block {
    margin-left: 130px;
  }

  .import {
    opacity: 0;
    position: absolute;
    width: 69px;
    height: 38px;
    margin-left: -10px;
  }
</style>
<!-- 正文开始 -->
<div class="layui-fluid">
  <div class="layui-card">
    <div class="layui-card-body">
      <!-- 头部操作栏 -->
      <div class="layui-form lay-header">
        <div class="toolbar">
          <div class="layui-form-item lay-query-content">
            <div class="lay-query-box">
              <div class="query-lt">
                <div class="layui-inline">
                  <label class="layui-form-label w-auto">类别名称：</label>
                  <div class="layui-input-inline">
                    <input name="name" class="layui-input" type="text" placeholder="请输入类别名称" autocomplete="off" />
                  </div>
                </div>
                <div class="layui-inline">
                  <button class="layui-btn icon-btn color-green" lay-filter="formSubSearchLog" lay-submit layui-form-keyDownSearch="true">查询</button>
                  <button class="layui-btn icon-btn color-white" lay-filter="resets" lay-submit>重置</button>
                </div>
              </div>
              <div class="query-rt"></div>
            </div>
          </div>
        </div>
        <div class="lay-btn-rows">
          <div class="lay-btn-box">
            <div class="lay-btn-lt">
              <button id="productTypeBtnAdd" class="layui-btn icon-btn color-reseda">添加</button>
              <button id="productTypeBtnImport" class="layui-btn icon-btn color-reseda">
                <input id="uploaderInput" type="file" name="file" class="import" accept=".xls,.xlsx" />
                导入
              </button>
            </div>
            <div class="lay-btn-rt">
              <button id="productTypeBtnTemplate" class="layui-btn icon-btn color-green">模板下载</button>
            </div>
          </div>
        </div>
      </div>
      <!-- 表格 -->
      <table class="layui-table" id="productTypeTable" lay-filter="productTypeTable"></table>
    </div>
  </div>
</div>

<!-- 表格操作列 -->
<script type="text/html" id="productTypeTableBar">
  <a class="layui-btn layui-btn-warm layui-btn-xs" lay-event="edit">修改</a>

  <!-- {{# if(d.systemDefault==false){ }} -->
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
  <!-- {{# } }} -->

  <!-- {{# if(d.finalClassifyStatus == 1){ }} -->
  <a class="layui-btn layui-btn-xs" lay-event="addSubProductType">添加子级</a>
  <!-- {{# } }} -->
</script>

<script type="text/html" id="productUnitPackBar">
  <a class="layui-btn layui-btn-xs" lay-event="productUnit">计量单位管理</a>
</script>

<script type="text/html" id="productSpecBar">
  <a class="layui-btn layui-btn-xs" lay-event="specTable">规格列表</a>
</script>

<script type="text/html" id="productAttrBar">
  <a class="layui-btn  layui-btn-xs" lay-event="attrTable">属性列表</a>
</script>

<script type="text/html" id="productProcessBar">
  {{# if(d.materialNature == '2'){ }}
  <a class="layui-btn  layui-btn-xs" lay-event="process">工序设置</a>
  {{# } }}
  <a class="layui-btn  layui-btn-xs" lay-event="itemTable">检测项管理</a>
</script>

<!-- 表单弹窗 -->
<script type="text/html" id="productTypeForm">
  <form lay-filter="productTypeForm" class="layui-form model-form">
    <input name="id" type="hidden" />
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">类别性质</label>
        <div class="layui-input-block">
          <select id="materialNature" name="materialNature" lay-filter="materialNature"></select>
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">上级类别</label>
        <input name="parentId" type="hidden" />
        <div class="layui-input-block" id="selectParentType"></div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">类别编码</label>
        <div class="layui-input-block">
          <input name="code" placeholder="请输入类别编码" type="text" class="layui-input" lay-verify="required|isOnlyName" required autocomplete="off" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">类别名称</label>
        <div class="layui-input-block">
          <input name="name" placeholder="请输入类别名称" type="text" class="layui-input" lay-verify="required|isOnlyName" required autocomplete="off" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">是否终极分类</label>
        <div class="layui-input-block">
          <input type="radio" name="finalClassifyStatus" value="1" title="否" checked />
          <input type="radio" name="finalClassifyStatus" value="0" title="是" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">是否一物一码</label>
        <div class="layui-input-block">
          <input type="radio" name="thingCodeStatus" value="1" title="否" checked />
          <input type="radio" name="thingCodeStatus" value="0" title="是" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">是否有质保期</label>
        <div class="layui-input-block">
          <input type="radio" name="guaranteeStatus" value="1" title="否" checked />
          <input type="radio" name="guaranteeStatus" value="0" title="是" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">是否先进先出</label>
        <div class="layui-input-block">
          <input type="radio" name="inoutStatus" value="1" title="否" checked />
          <input type="radio" name="inoutStatus" value="0" title="是" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item" id="depreciationTimeDiv" style="display: none">
        <label class="layui-form-label">折旧时长(月)</label>
        <div class="layui-input-block">
          <input name="depreciationTime" placeholder="请输入折旧时长" type="text" class="layui-input" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">类别维护部门</label>
        <input name="typeServiceDepartment" type="hidden" />
        <div class="layui-input-block" id="selectDepartment"></div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">是否启用</label>
        <div class="layui-input-block">
          <input name="isDeleted" type="checkbox" lay-skin="switch" value="1" checked="false" lay-text="启用|停用" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs6">
      <div class="layui-form-item">
        <label class="layui-form-label">排序</label>
        <div class="layui-input-block">
          <input name="sortNumber" placeholder="请输入排序" type="text" class="layui-input" lay-verify="" required autocomplete="off" />
        </div>
      </div>
    </div>
    <div class="layui-col-xs12">
      <div class="layui-form-item">
        <label class="layui-form-label">描述</label>
        <div class="layui-input-block">
          <textarea id="remark" name="remark" placeholder="请输入描述" class="layui-textarea" />
        </div>
      </div>
    </div>
    <div class="layui-form-item text-right">
      <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
      <button class="layui-btn" lay-filter="productTypeFormSubmit" lay-submit>保存</button>
    </div>
  </form>
</script>

<script type="text/html" id="productPackTab">
  <div class="layui-fluid">
    <div class="layui-card">
      <div class="layui-card-body">
        <!-- 头部操作栏 -->
        <div class="layui-form toolbar">
          <div class="layui-form-item">
            <div class="layui-inline">
              <label class="layui-form-label w-auto">计量编号：</label>
              <div class="layui-input-inline mr0">
                <input name="code" class="layui-input" type="text" placeholder="请输入计量编号" />
              </div>
            </div>
            <div class="layui-inline">
              <label class="layui-form-label w-auto">名称：</label>
              <div class="layui-input-inline mr0">
                <input name="name" class="layui-input" type="text" placeholder="请输入名称" />
              </div>
            </div>
            <div class="layui-inline">
              <button class="layui-btn icon-btn" lay-filter="productPackTabFormSubSearchLog" lay-submit layui-form-keyDownSearch="true">
                <i class="layui-icon">&#xe615;</i>
                搜索
              </button>
              <button id="productPackBtnAdd" class="layui-btn icon-btn">
                <i class="layui-icon">&#xe654;</i>
                添加
              </button>
              <button id="productPackBtnDel" class="layui-btn icon-btn layui-btn-danger">
                <i class="layui-icon"></i>
                批量删除
              </button>
            </div>
          </div>
        </div>
        <!-- 表格 -->
        <table class="layui-table" id="productPackTable" lay-filter="productPackTable"></table>
      </div>
    </div>
  </div>
</script>

<!-- 表格操作列 -->
<script type="text/html" id="productPackTableBar">
  <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>
  <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>

<!-- 表单弹窗 -->
<script type="text/html" id="productPackForm">
  <form lay-filter="productPackForm" class="layui-form model-form">
    <input name="id" type="hidden" />

    <div class="layui-form-item">
      <label class="layui-form-label">物料类别</label>
      <div class="layui-input-block">
        <select name="productTypeId" lay-filter="productType" lay-verify="required" lay-search disabled>
          <option value="">请选择物料类别</option>
        </select>
      </div>
    </div>

    <div class="layui-form-item">
      <label class="layui-form-label">包裝计量名称</label>
      <div class="layui-input-block">
        <input name="name" placeholder="请输入包装计量名称" type="text" class="layui-input" lay-verify="required" required />
      </div>
    </div>

    <div class="layui-form-item">
      <label class="layui-form-label">物料单位</label>
      <div class="layui-input-block">
        <select id="productUnitId" name="productUnitId" lay-filter="productUnitId" lay-verify="required" lay-search>
          <option value="">请选择物料单位</option>
        </select>
      </div>
    </div>

    <div class="layui-form-item">
      <label class="layui-form-label">换算方式</label>
      <div class="layui-input-block">
        <select name="rateType">
          <option value="fixed">固定换算率</option>
          <option value="floating">浮动</option>
        </select>
      </div>
    </div>

    <div class="layui-form-item">
      <label class="layui-form-label">换算率</label>
      <div class="layui-input-block">
        <input name="baseRate" placeholder="请输入换算率" type="text" class="layui-input" lay-verify="required" required />
      </div>
    </div>
    <div class="layui-form-item">
      <label class="layui-form-label">描述</label>
      <div class="layui-input-block">
        <textarea name="remark" placeholder="请输入描述" class="layui-textarea" />
      </div>
    </div>

    <div class="layui-form-item">
      <label class="layui-form-label">是否启用</label>
      <div class="layui-input-block">
        <input name="isDeleted" type="checkbox" lay-skin="switch" value="1" checked="false" lay-text="启用|停用" />
      </div>
    </div>

    <div class="layui-form-item">
      <label class="layui-form-label">排序</label>
      <div class="layui-input-block">
        <input name="sortNumber" placeholder="请输入排序" type="text" class="layui-input" lay-verify="" required />
      </div>
    </div>

    <div class="layui-form-item text-right">
      <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
      <button class="layui-btn" lay-filter="productPackFormSubmit" lay-submit>保存</button>
    </div>
  </form>
</script>

<!-- js部分 -->
<script>
  layui.use(['layer', 'form', 'table', 'laydate', 'admin', 'laytpl', 'tableTreeDj', 'config'], function () {
    var $ = layui.jquery;
    var layer = layui.layer;
    var form = layui.form;
    var table = layui.table;
    var laydate = layui.laydate;
    var config = layui.config;
    var admin = layui.admin;
    var upload = layui.upload;
    var laytpl = layui.laytpl;
    var tableTree = layui.tableTreeDj;

    // 渲染表格
    var insTb = tableTree.render(
      {
        id: 'productTypeTable',
        elem: '#productTypeTable',
        url: config.base + 'enterprise/product/admin/productType/list?requestType=storage',
        toolbar: true,
        defaultToolbar: ['filter'],
        where: { limit: 99999 },
        page: false,
        cellMinWidth: 100,
        cols: [
          [
            { type: 'numbers', title: '序号', fixed: 'left' },
            { field: 'name', align: 'left', title: '类别名称', width: 160 },
            { field: 'code', align: 'center', title: '类别编号', width: 120 },
            { field: 'materialNatureName', align: 'center', title: '物资性质', width: 120 },
            { field: 'typeServiceDepartmentName', align: 'center', title: '维护部门', width: 150 },
            {
              field: 'isDeleted',
              align: 'center',
              title: '是否启用',
              templet: function (d) {
                if (d.isDeleted) {
                  return '<input name="isDeleted" type="checkbox" lay-skin="switch" value="' + d.id + '" checked="' + d.isDeleted + '" lay-filter="isDeleted"  lay-text="启用|停用"/>';
                } else {
                  return '<input name="isDeleted" type="checkbox" lay-skin="switch" value="' + d.id + '" lay-filter="isDeleted"   lay-text="启用|停用"/>';
                }
              },
            },
            {
              field: 'systemDefault',
              align: 'center',
              title: '默认类别',
              templet: function (d) {
                if (d.systemDefault) {
                  return '是';
                } else {
                  return '否';
                }
              },
              width: 100,
            },
            { align: 'center', toolbar: '#productUnitPackBar', title: '计量单位管理', width: 120 },
            { align: 'center', toolbar: '#productSpecBar', title: '规格管理', width: 100 },
            { align: 'center', toolbar: '#productAttrBar', title: '属性管理', width: 100 },
            { align: 'center', toolbar: '#productProcessBar', title: '检测项管理', width: 220 },
            // , {field: 'createTime', align: 'center', title: '创建时间', width: 160}
            { align: 'center', toolbar: '#productTypeTableBar', title: '操作', width: 300, fixed: 'right' },
          ],
        ],
        done: function (res, curr, count) {},
      },
      { keyPid: 'parentId', title: 'name' },
    );

    // 工具条点击事件
    table.on('tool(productTypeTable)', function (obj) {
      var data = obj.data;
      if (obj.event === 'edit') {
        //修改
        admin.req(
          'enterprise/product/admin/productType/get',
          { id: data.id },
          function (res) {
            layer.closeAll('loading');
            if (res.code == 200) {
              data = res.data;
              data.eventType = 'edit';
              showEditModel(data);
            } else {
              layer.msg(res.msg, { icon: 2 });
            }
          },
          'GET',
        );
      } else if (obj.event === 'del') {
        // 删除
        doDelete(obj);
      } else if (obj.event == 'addSpec') {
        data.eventType = 'addSpec';
        showEditSpecModel(data);
      } else if (obj.event == 'specTable') {
        showSpecTableModel(data);
      } else if (obj.event == 'addAttr') {
        data.eventType = 'addAttr';
        showEditAttrModel(data);
      } else if (obj.event == 'attrTable') {
        showAttrTableModel(data);
      } else if (obj.event == 'itemTable') {
        showItemTableModel(data);
      } else if (obj.event == 'productUnit') {
        showEditUnitModel(data);
      } else if (obj.event == 'productPack') {
        showEditPackModel(data);
      } else if (obj.event == 'process') {
        showProcessModel(data);
      } else if (obj.event === 'addSubProductType') {
        var addSubProductTypeData = {};
        addSubProductTypeData.eventType = 'addSubProductType';
        addSubProductTypeData.materialNature = data.materialNature;
        addSubProductTypeData.parentId = data.id;
        addSubProductTypeData.typeServiceDepartment = data.typeServiceDepartment;
        admin.req(
          'enterprise/product/admin/productType/getCount',
          { id: data.id },
          function (res) {
            if (res.code === 200) {
              addSubProductTypeData.code = data.code + '-' + (res.data + 1);
              showEditModel(addSubProductTypeData);
            }
          },
          'GET',
        );
      } 
    });

    form.on('switch(isDeleted)', function (obj) {
      if (obj.elem.checked) {
        enable(obj.value);
      } else {
        disable(obj.value);
      }
    });

    function enable(id) {
      admin.req(
        'enterprise/product/admin/productType/enable',
        { id: id },
        function (res) {
          if (res.code == 200) {
            layer.msg(res.msg, { icon: 1 });
            table.reload('productTypeTable');
          } else {
            layer.msg(res.msg, { icon: 2 });
          }
        },
        'POST',
      );
    }

    function disable(id) {
      admin.req(
        'enterprise/product/admin/productType/disable',
        { id: id },
        function (res) {
          if (res.code == 200) {
            layer.msg(res.msg, { icon: 1 });
            table.reload('productTypeTable');
          } else {
            layer.msg(res.msg, { icon: 2 });
          }
        },
        'POST',
      );
    }

    //监听排序
    table.on('sort(productTypeTable)', function (obj) {
      table.reload('productTypeTable', {
        initSort: obj,
        where: {
          sort: obj.field,
          order: obj.type,
        },
      });
    });

    // 搜索
    form.on('submit(formSubSearchLog)', function (data) {
      insTb.reload({ where: data.field, page: { curr: 1 } }, 'data');
    });

    // 重置搜索
    form.on('submit(resets)', (data) => {
      $('.lay-header').find('select').val('');
      $('.lay-header').find('input').val('');
      let field = data.field;
      for (let key in field) {
        field[key] = '';
      }
      insTb.reload({ where: field, page: { curr: 1 } }, 'data');
    });

    // 添加按钮点击事件
    $('#productTypeBtnAdd').click(function () {
      var addData = {};
      addData.eventType = 'add';
      showEditModel(addData);
    });

    // 显示编辑弹窗
    function showEditModel(data) {
      admin.open({
        type: 1,
        area: '840px',
        offset: '120px',
        title: data.eventType == 'edit' ? '修改物料类别' : '添加物料类别',
        content: $('#productTypeForm').html(),
        success: function () {
          //类别性质
          admin.getDictList('materialNature', 'sys_product_type_nature', data.materialNature, '类别性质');
          //类别性质选择事件
          form.on('select(materialNature)', function (data) {
            if (data.value == 3) {
              $('#depreciationTimeDiv').show();
            } else {
              $('#depreciationTimeDiv').hide();
            }
            //触发筛选上级类别
            admin.initDataSelectTree(true, 'enterprise/product/admin/productType/getTreeData', { materialNatureList: [data.value] }, 'selectParentType', null, '上级类别', 'parentId', null);
          });
          //类别维护部门
          admin.initDataSelectTree(true, 'user/admin/role/getTreeData', null, 'selectDepartment', data.typeServiceDepartment, '类别维护部门', 'typeServiceDepartment', null);

          form.val('productTypeForm', data);

          if (data) {
            var hasBoxOption = $("form select[name='hasUseBox']").find('option');
            layui.each(hasBoxOption, function (index, item) {
              if (data.hasUseBox) {
                data.hasUseBox = 1;
              } else {
                data.hasUseBox = 0;
              }
            });
          }

          form.verify({
            isOnlyName: function (value) {
              var isOnly = true;
              var idVal = $("form input[name='id']").val();
              admin.req(
                'enterprise/product/admin/productType/isOnly',
                {
                  name: value,
                  id: idVal,
                },
                function (res) {
                  if (res.code == 200) {
                    isOnly = res.data;
                  }
                },
                'GET',
                false,
              );
              if (!isOnly) {
                return '名称必须唯一';
              }
            },
          });

          if (data && data.materialNature == 3) {
            $('#depreciationTimeDiv').show();
          }

          form.val('productTypeForm', data);
          form.render();

          //初始化上级类别
          admin.initDataSelectTree(true, 'enterprise/product/admin/productType/getTreeData', { productTypeId: data == undefined ? null : data.id, materialNatureList: data == undefined ? null : [data.materialNature] }, 'selectParentType', data.parentId, '上级类别', 'parentId', function (data) {
            // 获取上级类别ID
            var parentTypeId = data.change[0].value;
            admin.req(
              'enterprise/product/admin/productType/get',
              { id: parentTypeId },
              function (res) {
                layer.closeAll('loading');
                if (res.code == 200) {
                  //类别维护部门
                  admin.initDataSelectTree(true, 'user/admin/role/getTreeData', null, 'selectDepartment', res.data.typeServiceDepartment, '类别维护部门', 'typeServiceDepartment', null);
                  admin.req(
                    'enterprise/product/admin/productType/getCount',
                    { productTypeId: parentTypeId },
                    function (response) {
                      if (response.code == 200) {
                        $('input[name="code"]').val(res.data.code + '-' + (response.data + 1));
                      }
                    },
                    'GET',
                  );
                }
              },
              'GET',
            );
          });

          // 表单提交事件
          form.on('submit(productTypeFormSubmit)', function (d) {
            layer.load(2);

            var isDeleted = $("form input[name='isDeleted']").prop('checked');
            if (!isDeleted) {
              d.field.isDeleted = false;
            } else {
              d.field.isDeleted = true;
            }
            admin.req(
              data.eventType == 'edit' ? 'enterprise/product/admin/productType/update' : 'enterprise/product/admin/productType/add',
              d.field,
              function (res) {
                layer.closeAll('loading');
                if (res.code == 200) {
                  layer.msg(res.msg, { icon: 1 });
                  table.reload('productTypeTable');
                  layer.closeAll('page');
                } else {
                  layer.msg(res.msg, { icon: 2 });
                }
              },
              data.eventType == 'edit' ? 'PUT' : 'POST',
            );
            return false;
          });
        },
      });
    }

    function showEditUnitModel(productTypeData) {
      admin.putTempData('productTypeData', productTypeData ? productTypeData : null);
      admin.formOpen({
        area: ['1440px', '87%'],
        title: '计量单位管理',
        path: 'components/product/productType/productUnit.html',
        success: function () {},
      });
    }

    function showEditPackModel(productTypeData) {
      admin.open({
        type: 1,
        area: '1440px',
        offset: '65px',
        title: '包装计量方案',
        content: $('#productPackTab').html(),
        success: function () {
          var insTb = table.render({
            elem: '#productPackTable',
            url: config.base + 'enterprise/product/admin/productPack/list?productType=' + productTypeData.id,
            page: true,
            cellMinWidth: 100,
            cols: [
              [
                { type: 'checkbox' },
                { field: 'name', align: 'center', title: '包装计量方案名称', width: 150 },
                { field: 'code', align: 'center', title: '包装计量方案编码', width: 150 },
                { field: 'packUnitName', title: '包装单位' },
                { field: 'productTypeName', title: '所属物料类别' },
                /*,{field: 'isBaseUnit', align: 'center', title: '是否基础单位',templet:function (d) {
                                    if(d.isBaseUnit){
                                        return '是'
                                    }else{
                                        return  '否'
                                    }
                                }}*/
                { field: 'baseRate', align: 'center', title: '换算率' },
                {
                  field: 'converteMethod',
                  align: 'center',
                  title: '换算公式',
                  templet: function (d) {
                    return `1${d.productUnitName}=${d.baseRate}${d.basicsUnitName}`;
                  },
                },

                {
                  field: 'isDeleted',
                  align: 'center',
                  title: '是否启用',
                  templet: function (d) {
                    if (d.isDeleted) {
                      return '<input name="isDeleted" type="checkbox" lay-skin="switch" value="' + d.id + '" checked="' + d.isDeleted + '" lay-filter="isDeleted"  lay-text="启用|停用"/>';
                    } else {
                      return '<input name="isDeleted" type="checkbox" lay-skin="switch" value="' + d.id + '" lay-filter="isDeleted"   lay-text="启用|停用"/>';
                    }
                  },
                },
                { field: 'creatorName', align: 'center', title: '创建人' },
                { field: 'createTime', align: 'center', title: '创建时间' },
                // ,{align: 'center', toolbar: '#productPackTableBar', title: '操作', width: 200}
              ],
            ],
            done: function (res, curr, count) {},
          });

          // 工具条点击事件
          table.on('tool(productPackTable)', function (obj) {
            var data = obj.data;
            if (obj.event === 'edit') {
              //修改
              showEditModel(data);
            } else if (obj.event === 'del') {
              // 删除
              doDelete(obj);
            }
          });

          //监听排序
          table.on('sort(productPackTable)', function (obj) {
            table.reload('productPackTable', {
              initSort: obj,
              where: {
                sort: obj.field,
                order: obj.type,
              },
            });
          });

          // 搜索
          form.on('submit(productPackTabFormSubSearchLog)', function (data) {
            insTb.reload({ where: data.field, page: { curr: 1 } }, 'data');
          });

          form.on('switch(isDeleted)', function (obj) {
            if (obj.elem.checked) {
              enable(obj.value);
            } else {
              disable(obj.value);
            }
          });

          function enable(id) {
            admin.req(
              'enterprise/product/admin/productPack/enable',
              { id: id },
              function (res) {
                if (res.code == 200) {
                  layer.msg(res.msg, { icon: 1 });
                  table.reload('productPackTable');
                } else {
                  layer.msg(res.msg, { icon: 2 });
                }
              },
              'POST',
            );
          }

          function disable(id) {
            admin.req(
              'enterprise/product/admin/productPack/disable',
              { id: id },
              function (res) {
                if (res.code == 200) {
                  layer.msg(res.msg, { icon: 1 });
                  table.reload('productPackTable');
                } else {
                  layer.msg(res.msg, { icon: 2 });
                }
              },
              'POST',
            );
          }

          // 添加按钮点击事件
          $('#productPackBtnAdd').click(function () {
            showEditModel();
          });

          $('#productPackBtnDel').click(function () {
            var checkRows = table.checkStatus('productPackTable');
            if (checkRows.data.length == 0) {
              layer.msg('请选择要删除的数据', { icon: 2 });
            } else {
              var ids = '';
              checkRows.data.forEach((item) => {
                ids += item.id + ',';
              });
              delBatch(ids);
            }
          });

          function delBatch(ids) {
            admin.req(
              'enterprise/product/admin/productPack/delBatch',
              { ids: ids },
              function (res) {
                if (res.code == 200) {
                  layer.msg(res.msg, { icon: 1 });
                  table.reload('productPackTable');
                } else {
                  layer.msg(res.msg, { icon: 2 });
                }
              },
              'POST',
            );
          }

          // 显示编辑弹窗
          function showEditModel(data) {
            var windowIndex = admin.open({
              type: 1,
              area: '760px',
              offset: '65px',
              title: data ? '修改物料包装' : '添加物料包装',
              content: $('#productPackForm').html(),
              success: function () {
                if (data) {
                  var option = $("form select[name='rateType']").find('option');
                  layui.each(option, function (index, item) {
                    if (data.rateType == item.text) {
                      data.rateType = item.value;
                    }
                  });
                }
                /**
                                 admin.req('enterprise/product/admin/productType/list', {limit:9999}, function (res) {
                                    if ( res.code==200) {
                                        var html='<option value=""> 请选择物料类别</option>';
                                        for(var k=0;k<res.data.length;k++){
                                            html+='<option value="'+res.data[k].id+'" data-productTypeCode="'+res.data[k].code+'">'+res.data[k].name+'</option>';
                                        }
                                        $("form select[name='productType']").html(html);
                                        form.render('select')
                                        if(data){
                                            $("form select[name='productType']").val(data.productType);
                                            getProductUnit(data.productType,false);
                                        }
                                    } else {
                                        layer.msg('获取物料类别失败', {icon: 2, time: 1000});
                                    }
                                }, 'GET');*/
                var option = '<option selected>' + productTypeData.name + '</option>';
                $("form select[name='productTypeId']").html(option);
                form.render('select');

                var getProductUnit = function (productType, reSelect) {
                  admin.req(
                    'enterprise/product/admin/productUnit/list',
                    {
                      productType: productTypeSystem,
                      limit: 9999,
                    },
                    function (res) {
                      if (res.code == 200) {
                        var html = '<option value=""> 请选择物料单位</option>';
                        for (var k = 0; k < res.data.length; k++) {
                          if (!res.data[k].isBaseUnit) {
                            html += '<option value="' + res.data[k].id + '" data-productUnitCode="' + res.data[k].code + '">' + res.data[k].name + '</option>';
                          }
                        }
                        $("form select[name='productUnitId']").html(html);
                        form.render('select');
                        if (data && !reSelect) {
                          $("form select[name='productUnitId']").val(data.productUnitId);
                          form.render();
                        }
                      } else {
                        layer.msg('获取物料类别失败', { icon: 2, time: 1000 });
                      }
                    },
                    'GET',
                  );
                };

                getProductUnit(productTypeData.id, false);

                form.on('select(productType)', function (data) {
                  if (data.value != '') {
                    getProductUnit(data.value, true);
                  }
                });

                form.val('productPackForm', data);
                // 表单提交事件
                form.on('submit(productPackFormSubmit)', function (d) {
                  layer.load(2);
                  var isDeleted = $("form input[name='isDeleted']").prop('checked');
                  if (!isDeleted) {
                    d.field.isDeleted = false;
                  } else {
                    d.field.isDeleted = true;
                  }
                  // d.field.productTypeCode=$("form select[name='productType'] option:selected").data('producttypecode');
                  d.field.productUnitCode = $("form select[name='productUnitId'] option:selected").data('productunitcode');
                  d.field.productType = productTypeData.id;
                  d.field.productTypeCode = productTypeData.code;
                  admin.req(
                    data ? 'enterprise/product/admin/productPack/update' : 'enterprise/product/admin/productPack/add',
                    d.field,
                    function (res) {
                      layer.closeAll('loading');
                      if (res.code == 200) {
                        layer.msg(res.msg, { icon: 1 });
                        table.reload('productPackTable');
                        // layer.closeAll('page');
                        layer.close(windowIndex);
                      } else {
                        layer.msg(res.msg, { icon: 2 });
                      }
                    },
                    data ? 'PUT' : 'POST',
                  );
                  return false;
                });
              },
            });
          }

          // 删除
          function doDelete(obj) {
            layer.confirm(
              '确定要删除吗？',
              {
                offset: '65px',
                skin: 'layui-layer-admin',
              },
              function (i) {
                layer.close(i);
                layer.load(2);
                admin.req(
                  'enterprise/product/admin/productPack/' + obj.data.id,
                  {},
                  function (res) {
                    layer.closeAll('loading');
                    if (res.code == 200) {
                      layer.msg(res.msg, { icon: 1 });
                      obj.del();
                    } else {
                      layer.msg(res.msg, { icon: 2 });
                    }
                  },
                  'DELETE',
                );
              },
            );
          }
        },
      });
    }

    //spec table
    function showSpecTableModel(data) {
      admin.putTempData('data', data ? data : null);
      admin.formOpen({
        area: ['1440px', '87%'],
        title: '物料规格管理',
        path: 'components/product/productType/productSpec.html',
        success: function () {},
      });
    }

    //attr table
    function showAttrTableModel(data) {
      admin.putTempData('data', data ? data : null);
      admin.formOpen({
        area: ['1440px', '87%'],
        title: '物料属性管理',
        path: 'components/product/productType/productAttr.html',
        success: function () {},
      });
    }

    function showItemTableModel(data) {
      // admin.putTempData("data", data ? data : null);
      console.log(1, data);
      admin.formOpen({
        area: ['1440px', '87%'],
        title: '检测项管理',
        path: 'components/product/productType/productItem.html',
        success: function () {
          parentData.data = data;
        },
      });
    }

    //工序设置
    function showProcessModel(data) {
      admin.putTempData('data', data ? data : null);
      admin.formOpen({
        area: ['1440px', '87%'],
        title: '工序设置',
        path: 'components/product/productType/productProcess.html',
        success: function () {},
      });
    }

    // 删除
    function doDelete(obj) {
      layer.confirm(
        '确定要删除吗？',
        {
          offset: '65px',
          skin: 'layui-layer-admin',
        },
        function (i) {
          layer.close(i);
          layer.load(2);
          admin.req(
            'enterprise/product/admin/productType/' + obj.data.id,
            {},
            function (res) {
              layer.closeAll('loading');
              if (res.code == 200) {
                layer.msg(res.msg, { icon: 1 });
                obj.del();
              } else {
                layer.msg(res.msg, { icon: 2 });
              }
            },
            'DELETE',
          );
        },
      );
    }

    // 模板下载
    $('#productTypeBtnTemplate').click(function () {
      window.location.href = config.base + 'enterprise/product/admin/productType/template';
    });

    //导入excel
    $('#uploaderInput').on('change', function (e) {
      layer.load(2);
      var formData = new FormData();
      var files = e.target.files;
      let that = $(this);
      formData.append('file', files[0]);
      formData.append('name', files[0].name); //这个地方可以传递多个参数
      $.ajax({
        url: config.base + 'enterprise/product/admin/productType/importExcel',
        data: formData,
        headers: { Authorization: 'Bearer ' + config.getToken() },
        type: 'POST',
        processData: false,
        contentType: false,
        success: function (res) {
          layer.closeAll('loading');
          if (res.code == 200) {
            layer.msg(res.msg, { icon: 1 });
            layer.closeAll('page');
            setTimeout((_) => {
              location.reload();
            }, 1000);
          } else {
            layer.msg(res.msg, { icon: 2 });
          }
          that.val('');
        },
      });
    });

    // 导出excel
    $('#productTypeBtnExport').click(function () {
      var checkRows = table.checkStatus('productTypeTable');
      if (checkRows.data.length == 0) {
        layer.msg('请选择要导出的数据', { icon: 2 });
      } else {
        table.exportFile(insTb.config.id, checkRows.data, 'xls');
      }
    });
  });
</script>
